home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Night Owl 6
/
Night Owl's Shareware - PDSI-006 - Night Owl Corp (1990).iso
/
002a
/
vaxgames.zip
/
TTT.COM
< prev
next >
Wrap
Text File
|
1989-04-21
|
6KB
|
292 lines
$! TTT_DCL -- See info at end of file.
$ GOT END
$B:
$ T := WR SYS$OUTPUT
$ O = "O"
$ O1 = ".OO"
$ O2 = "O.O"
$ O3 = "OO."
$ P = "."
$ Q1 = "Your play..."
$ Q2 = "> "
$ Q3 = "N"
$ Q4 = "Q"
$ Q5 = "Congratulations! You win!"
$ Q6 = "Play again? "
$ Q7 = "Sorry, I win."
$ Q8 = "Tie game."
$ Q9 = "Illegal move. Try again."
$ Q0 = "Thanks for playing."
$ QA = "Beginning new game..."
$ S = " "
$ WP = "XXX"
$ X = "X"
$ X1 = ".XX"
$ X2 = "X.X"
$ X3 = "XX."
$ Z = ""
$ GOS V
$! Initialization
$IN:
$ P1 = P
$ P2 = P
$ P3 = P
$ P4 = P
$ P5 = P
$ P6 = P
$ P7 = P
$ P8 = P
$ P9 = P
$ T QA
$!
$!
$N:
$ T Q1
$ INQ/NOP M "''Q2'"
$ IF M .EQS. Z .OR. -
F$LE(M) .GT. 1 THEN GOT E
$ IF M .EQS. Q3 THEN GOT IN
$ IF M .EQS. Q4 THEN GOT Q
$ IF F$IN(M) .EQ. 0 THEN GOT E
$ IF P'M' .NES. P THEN GOT E
$ P'M' = X
$ GOS BB
$ IF F$LOC(P,BD) .EQ. 9 -
THEN GOT TIE
$ GOS DB
$ GOS CW
$ IF W THEN GOT HW
$! Grab center square, if available.
$ IF P5 .NES. P THEN GOT W
$ P5 = O
$ GOS BB
$ GOS DB
$ GOT N
$W:
$ GOS DW
$ GOS WB
$ IF MV THEN GOT N
$ GOS GC
$ GOS BB
$ GOS DB
$ GOT N
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$! SUBROUTINES !
$!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
$BB:
$ BD = P1+P2+P3+P4+P5+P6+P7+P8+P9
$ RET
$!
$! Display the board:
$DB:
$ T Z
$ T S+P1+S+P2+S+P3
$ T S+P4+S+P5+S+P6
$ T S+P7+S+P8+S+P9
$ T Z
$ RET
$!
$! Is move a winner?
$CW:
$ W = 0
$! Check horizontally:
$ IF P1+P2+P3 .EQS. WP THEN W=1
$ IF P4+P5+P6 .EQS. WP THEN W=1
$ IF P7+P8+P9 .EQS. WP THEN W=1
$ IF W THEN RET
$! Check vertically:
$ IF P1+P4+P7 .EQS. WP THEN W=1
$ IF P2+P5+P8 .EQS. WP THEN W=1
$ IF P3+P6+P9 .EQS. WP THEN W=1
$ IF W THEN RET
$! Check diagonally:
$ IF P1+P5+P9 .EQS. WP THEN W=1
$ IF P3+P5+P7 .EQS. WP THEN W=1
$ RET
$!
$WB:
$ MV = 0
$ OB = BD
$ R = P1+P2+P3
$ IF R .EQS. X1 THEN P1 = O
$ IF R .EQS. X2 THEN P2 = O
$ IF R .EQS. X3 THEN P3 = O
$ IF R .NES. P1+P2+P3 THEN GOT BN
$ R = P4+P5+P6
$ IF R .EQS. X1 THEN P4 = O
$ IF R .EQS. X2 THEN P5 = O
$ IF R .EQS. X3 THEN P6 = O
$ IF R .NES. P4+P5+P6 THEN GOT BN
$ R = P7+P8+P9
$ IF R .EQS. X1 THEN P7 = O
$ IF R .EQS. X2 THEN P8 = O
$ IF R .EQS. X3 THEN P9 = O
$ IF R .NES. P7+P8+P9 THEN GOT BN
$ R = P1+P4+P7
$ IF R .EQS. X1 THEN P1 = O
$ IF R .EQS. X2 THEN P4 = O
$ IF R .EQS. X3 THEN P7 = O
$ IF R .NES. P1+P4+P7 THEN GOT BN
$ R = P2+P5+P8
$ IF R .EQS. X1 THEN P2 = O
$ IF R .EQS. X2 THEN P5 = O
$ IF R .EQS. X3 THEN P8 = O
$ IF R .NES. P2+P5+P8 THEN GOT BN
$ R = P3+P6+P9
$ IF R .EQS. X1 THEN P3 = O
$ IF R .EQS. X2 THEN P6 = O
$ IF R .EQS. X3 THEN P9 = O
$ IF R .NES. P3+P6+P9 THEN GOT BN
$ R = P1+P5+P9
$ IF R .EQS. X1 THEN P1 = O
$ IF R .EQS. X2 THEN P5 = O
$ IF R .EQS. X3 THEN P9 = O
$ IF R .NES. P1+P5+P9 THEN GOT BN
$ R = P3+P5+P7
$ IF R .EQS. X1 THEN P3 = O
$ IF R .EQS. X2 THEN P5 = O
$ IF R .EQS. X3 THEN P7 = O
$ IF R .NES. P3+P5+P7 THEN GOT BN
$ RET
$BN:
$ MV = 1
$ GOS BB
$ GOS DB
$ RET
$!
$ DW:
$ MV = 0
$ OB = BD
$ R = P1+P2+P3
$ IF R .EQS. O1 THEN P1 = O
$ IF R .EQS. O2 THEN P2 = O
$ IF R .EQS. O3 THEN P3 = O
$ IF R .NES. P1+P2+P3 THEN GOT WD
$ R = P4+P5+P6
$ IF R .EQS. O1 THEN P4 = O
$ IF R .EQS. O2 THEN P5 = O
$ IF R .EQS. O3 THEN P6 = O
$ IF R .NES. P4+P5+P6 THEN GOT WD
$ R = P7+P8+P9
$ IF R .EQS. O1 THEN P7 = O
$ IF R .EQS. O2 THEN P8 = O
$ IF R .EQS. O3 THEN P9 = O
$ IF R .NES. P7+P8+P9 THEN GOT WD
$ R = P1+P4+P7
$ IF R .EQS. O1 THEN P1 = O
$ IF R .EQS. O2 THEN P4 = O
$ IF R .EQS. O3 THEN P7 = O
$ IF R .NES. P1+P4+P7 THEN GOT WD
$ R = P2+P5+P8
$ IF R .EQS. O1 THEN P2 = O
$ IF R .EQS. O2 THEN P5 = O
$ IF R .EQS. O3 THEN P8 = O
$ IF R .NES. P2+P5+P8 THEN GOT WD
$ R = P3+P6+P9
$ IF R .EQS. O1 THEN P3 = O
$ IF R .EQS. O2 THEN P6 = O
$ IF R .EQS. O3 THEN P9 = O
$ IF R .NES. P3+P6+P9 THEN GOT WD
$ R = P1+P5+P9
$ IF R .EQS. O1 THEN P1 = O
$ IF R .EQS. O2 THEN P5 = O
$ IF R .EQS. O3 THEN P9 = O
$ IF R .NES. P1+P5+P9 THEN GOT WD
$ R = P3+P5+P7
$ IF R .EQS. O1 THEN P3 = O
$ IF R .EQS. O2 THEN P5 = O
$ IF R .EQS. O3 THEN P7 = O
$ IF R .NES. P3+P5+P7 THEN GOT WD
$ RET
$WD:
$ MV = 1
$ GOS BB
$ GOS DB
$ GOT WC
$!
$GC:
$ IF P1 .NES. P THEN GOT G3
$ P1 = O
$ RET
$G3:
$ IF P3 .NES. P THEN GOT G7
$ P3 = O
$ RET
$G7:
$ IF P7 .NES. P THEN GOT G9
$ P7 = O
$ RET
$G9:
$ IF P9 .NES. P THEN RET
$ P9 = O
$ RET
$!
$ V:
$ TY SYS$INPUT:
This command procedure plays Tic-Tac-Toe.
Your mark is X and you will play first.
The board is numbered as follows:
1 2 3
4 5 6
7 8 9
When it is your turn to play, enter the
number of the square you wish to mark.
For example, if you type "5", the
result is:
. . .
. X .
. . .
You may start a new game by typing N
or quit by typing Q.
$ RET
$HW:
$ GOS DB
$ T Q5
$ INQ/NOP A "''Q6"
$ IF A THEN GOT IN
$ GOT Q
$!
$WC:
$ T Q7
$ INQ/NOP A "''Q6'"
$ IF A THEN GOT IN
$ GOT Q
$!
$TIE:
$ GOS DB
$ T Q8
$ INQ/NOP A "''Q6'"
$ IF A THEN GOT IN
$ GOT Q
$!
$E:
$ T Q9
$ GOT N
$!
$Q:
$ T Q0
$ EXI
$END:
$ GOT B
$! TTT_DCL
$! DCL version of Tic-Tac-Toe
$! Loosely based on algorithms contained
$! in the book "String and List
$! Processing in SNOBOL" by
$! Ralph E. Griswold and the SNOBOL4+ code
$! developed and copyrighted by Mark Emmer
$! of Catspaw, Inc.
$!
$! Copyright (C) 1989 by
$! Kevin G. Barkes Consulting Services
$! 4107 Overlook Street
$! Library, PA 15129
$! 412-854-2550 (Voice)
$! 412-854-0511 (SYS$OUTPUT BBS)
$! 412-854-4707 (Facsimile)
$! All rights reserved. No restriction on
$! non-commercial distribution. This
$! software is guaranteed to suck up cpu
$! time. No other warranties are made or
$! implied.